package com.winchain.chainbill.tbill.biz.rx;

import com.shell.bee.base.utils.StringUtil;
import com.shell.framework.rx.OnErrorNotImplementedSubscriber;
import com.shell.stellar.exception.UnCheckMsgException;
import com.winchain.chainbill.tbill.base.po.TbDct;
import com.winchain.chainbill.tbill.base.po.TbRec;
import com.winchain.chainbill.tbill.base.po.TbSnd;
import com.winchain.chainbill.tbill.base.service.TbSndService;
import com.winchain.chainbill.tbill.biz.TBill;
import com.winchain.chainbill.tbill.biz.TBillEvent;
import com.winchain.chainbill.tbill.biz.service.impl.TBillQuotaService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component
public class TBillDctQuotaSubscriber extends OnErrorNotImplementedSubscriber<TBillEvent<TbDct>> {
	@Autowired
	private TBillQuotaService tBillQuotaService;
	@Autowired
	private TbSndService tbSndService;

	public void onApplicationEvent(TBillEvent<TbDct> t) {
		String optType = t.getStringValue("quotaOptType");
		if (StringUtil.notEmpty(optType)) {
			String remark;
			switch (optType) {
			case "qt_blk":
				remark = "������������";
				break;
			case "qt_ubk":
				remark = "������������";
				break;
			case "tb_use":
				remark = "������������";
				break;
			case "tb_res":
				remark = "������������";
				break;
			default:
				throw new UnCheckMsgException("����������������" + optType);
			}
			TbRec rec = t.getBill().getRec();

			Object obj = t.getValue("snd");
			TbSnd snd;
			if (obj == null) {
				snd = this.tbSndService.selectByBillId(rec.getBillId());
			} else {
				snd = (TbSnd) obj;
			}
			this.tBillQuotaService.trade(rec, snd, optType, remark);
		}
	}
}
